<!DOCTYPE HTML>

<html lang="en">
<head>

<title>DelegatingPasswordEncoder (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="DelegatingPasswordEncoder (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="DelegatingPasswordEncoder.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="DelegatingPasswordEncoder.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="DelegatingPasswordEncoder.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="DelegatingPasswordEncoder.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="DelegatingPasswordEncoder.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.crypto.password</a></div>
<h2 title="Class DelegatingPasswordEncoder" class="title">Class DelegatingPasswordEncoder</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.springframework.security.crypto.password.DelegatingPasswordEncoder</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">DelegatingPasswordEncoder</span>
extends java.lang.Object
implements <a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a></pre>
<div class="block">A password encoder that delegates to another PasswordEncoder based upon a prefixed
identifier.
<h2>Constructing an instance</h2>
You can easily construct an instance using
<a href="../factory/PasswordEncoderFactories.html" title="class in org.springframework.security.crypto.factory"><code>PasswordEncoderFactories</code></a>.
Alternatively, you may create your own custom instance. For example:
<pre> String idForEncode = "bcrypt";
 Map&lt;String,PasswordEncoder&gt; encoders = new HashMap&lt;&gt;();
 encoders.put(idForEncode, new BCryptPasswordEncoder());
 encoders.put("noop", NoOpPasswordEncoder.getInstance());
 encoders.put("pbkdf2", new Pbkdf2PasswordEncoder());
 encoders.put("scrypt", new SCryptPasswordEncoder());
 encoders.put("sha256", new StandardPasswordEncoder());

 PasswordEncoder passwordEncoder = new DelegatingPasswordEncoder(idForEncode, encoders);
 </pre>
<h2>Password Storage Format</h2>
The general format for a password is:
<pre> {id}encodedPassword
 </pre>
Such that "id" is an identifier used to look up which <a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> should be
used and "encodedPassword" is the original encoded password for the selected
<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a>. The "id" must be at the beginning of the password, start with
"{" and end with "}". If the "id" cannot be found, the "id" will be null.
For example, the following might be a list of passwords encoded using different "id".
All of the original passwords are "password".
<pre> {bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
 {noop}password
 {pbkdf2}5d923b44a6d129f3ddf3e3c8d29412723dcbde72445e8ef6bf3b508fbf17fa4ed4d6b99ca763d8dc
 {scrypt}$e0801$8bWJaSu2IKSn9Z9kM+TPXfOc/9bdYSrN1oD9qfVThWEwdRTnO7re7Ei+fUZRJ68k9lTyuTeUp4of4g24hHnazw==$OAOec05+bXxvuu/1qZ6NUR+xQYvYv7BeL1QxwRpY5Pc=
 {sha256}97cde38028ad898ebc02e690819fa220e88c62e0699403e94fff291cfffaf8410849f27605abcbc0
 </pre>
For the DelegatingPasswordEncoder that we constructed above:
<ol>
<li>The first password would have a <code>PasswordEncoder</code> id of "bcrypt" and
encodedPassword of "$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG". When
matching it would delegate to
<a href="../bcrypt/BCryptPasswordEncoder.html" title="class in org.springframework.security.crypto.bcrypt"><code>BCryptPasswordEncoder</code></a></li>
<li>The second password would have a <code>PasswordEncoder</code> id of "noop" and
encodedPassword of "password". When matching it would delegate to
<a href="NoOpPasswordEncoder.html" title="class in org.springframework.security.crypto.password"><code>NoOpPasswordEncoder</code></a></li>
<li>The third password would have a <code>PasswordEncoder</code> id of "pbkdf2" and
encodedPassword of
"5d923b44a6d129f3ddf3e3c8d29412723dcbde72445e8ef6bf3b508fbf17fa4ed4d6b99ca763d8dc".
When matching it would delegate to <a href="Pbkdf2PasswordEncoder.html" title="class in org.springframework.security.crypto.password"><code>Pbkdf2PasswordEncoder</code></a></li>
<li>The fourth password would have a <code>PasswordEncoder</code> id of "scrypt" and
encodedPassword of
"$e0801$8bWJaSu2IKSn9Z9kM+TPXfOc/9bdYSrN1oD9qfVThWEwdRTnO7re7Ei+fUZRJ68k9lTyuTeUp4of4g24hHnazw==$OAOec05+bXxvuu/1qZ6NUR+xQYvYv7BeL1QxwRpY5Pc="
When matching it would delegate to
<a href="../scrypt/SCryptPasswordEncoder.html" title="class in org.springframework.security.crypto.scrypt"><code>SCryptPasswordEncoder</code></a></li>
<li>The final password would have a <code>PasswordEncoder</code> id of "sha256" and
encodedPassword of
"97cde38028ad898ebc02e690819fa220e88c62e0699403e94fff291cfffaf8410849f27605abcbc0".
When matching it would delegate to <a href="StandardPasswordEncoder.html" title="class in org.springframework.security.crypto.password"><code>StandardPasswordEncoder</code></a></li>
</ol>
<h2>Password Encoding</h2>
The <code>idForEncode</code> passed into the constructor determines which
<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> will be used for encoding passwords. In the
<code>DelegatingPasswordEncoder</code> we constructed above, that means that the result of
encoding "password" would be delegated to <code>BCryptPasswordEncoder</code> and be prefixed
with "{bcrypt}". The end result would look like:
<pre> {bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
 </pre>
<h2>Password Matching</h2>
Matching is done based upon the "id" and the mapping of the "id" to the
<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> provided in the constructor. Our example in "Password Storage
Format" provides a working example of how this is done.
By default the result of invoking <a href="DelegatingPasswordEncoder.html#matches(java.lang.CharSequence,java.lang.String)"><code>matches(CharSequence, String)</code></a> with a
password with an "id" that is not mapped (including a null id) will result in an
<code>IllegalArgumentException</code>. This behavior can be customized using
<a href="DelegatingPasswordEncoder.html#setDefaultPasswordEncoderForMatches(org.springframework.security.crypto.password.PasswordEncoder)"><code>setDefaultPasswordEncoderForMatches(PasswordEncoder)</code></a>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>5.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../factory/PasswordEncoderFactories.html" title="class in org.springframework.security.crypto.factory"><code>PasswordEncoderFactories</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">

</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="DelegatingPasswordEncoder.html#%3Cinit%3E(java.lang.String,java.util.Map)">DelegatingPasswordEncoder</a></span>&#8203;(java.lang.String&nbsp;idForEncode,
java.util.Map&lt;java.lang.String,&#8203;<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a>&gt;&nbsp;idToPasswordEncoder)</code></th>
<td class="colLast">
<div class="block">Creates a new instance</div>
</td>
</tr>
</table>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="DelegatingPasswordEncoder.html#encode(java.lang.CharSequence)">encode</a></span>&#8203;(java.lang.CharSequence&nbsp;rawPassword)</code></th>
<td class="colLast">
<div class="block">Encode the raw password.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="DelegatingPasswordEncoder.html#matches(java.lang.CharSequence,java.lang.String)">matches</a></span>&#8203;(java.lang.CharSequence&nbsp;rawPassword,
java.lang.String&nbsp;prefixEncodedPassword)</code></th>
<td class="colLast">
<div class="block">Verify the encoded password obtained from storage matches the submitted raw
password after it too is encoded.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="DelegatingPasswordEncoder.html#setDefaultPasswordEncoderForMatches(org.springframework.security.crypto.password.PasswordEncoder)">setDefaultPasswordEncoderForMatches</a></span>&#8203;(<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a>&nbsp;defaultPasswordEncoderForMatches)</code></th>
<td class="colLast">
<div class="block">Sets the <a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> to delegate to for
<a href="DelegatingPasswordEncoder.html#matches(java.lang.CharSequence,java.lang.String)"><code>matches(CharSequence, String)</code></a> if the id is not mapped to a
<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="DelegatingPasswordEncoder.html#upgradeEncoding(java.lang.String)">upgradeEncoding</a></span>&#8203;(java.lang.String&nbsp;prefixEncodedPassword)</code></th>
<td class="colLast">
<div class="block">Returns true if the encoded password should be encoded again for better security,
else false.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">

</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(java.lang.String,java.util.Map)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DelegatingPasswordEncoder</h4>
<pre>public&nbsp;DelegatingPasswordEncoder&#8203;(java.lang.String&nbsp;idForEncode,
                                 java.util.Map&lt;java.lang.String,&#8203;<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a>&gt;&nbsp;idToPasswordEncoder)</pre>
<div class="block">Creates a new instance</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>idForEncode</code> - the id used to lookup which <a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> should be
used for <a href="DelegatingPasswordEncoder.html#encode(java.lang.CharSequence)"><code>encode(CharSequence)</code></a></dd>
<dd><code>idToPasswordEncoder</code> - a Map of id to <a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> used to determine
which <a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> should be used for
<a href="DelegatingPasswordEncoder.html#matches(java.lang.CharSequence,java.lang.String)"><code>matches(CharSequence, String)</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="setDefaultPasswordEncoderForMatches(org.springframework.security.crypto.password.PasswordEncoder)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>setDefaultPasswordEncoderForMatches</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setDefaultPasswordEncoderForMatches&#8203;(<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a>&nbsp;defaultPasswordEncoderForMatches)</pre>
<div class="block">Sets the <a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> to delegate to for
<a href="DelegatingPasswordEncoder.html#matches(java.lang.CharSequence,java.lang.String)"><code>matches(CharSequence, String)</code></a> if the id is not mapped to a
<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a>.
<p>
The encodedPassword provided will be the full password passed in including the
{"id"} portion.* For example, if the password of "{notmapped}foobar" was used, the
"id" would be "notmapped" and the encodedPassword passed into the
<a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password"><code>PasswordEncoder</code></a> would be "{notmapped}foobar".
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>defaultPasswordEncoderForMatches</code> - the encoder to use. The default is to throw
an <code>IllegalArgumentException</code></dd>
</dl>
</li>
</ul>
<a id="encode(java.lang.CharSequence)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>encode</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;encode&#8203;(java.lang.CharSequence&nbsp;rawPassword)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="PasswordEncoder.html#encode(java.lang.CharSequence)">PasswordEncoder</a></code></span></div>
<div class="block">Encode the raw password. Generally, a good encoding algorithm applies a SHA-1 or
greater hash combined with an 8-byte or greater randomly generated salt.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="PasswordEncoder.html#encode(java.lang.CharSequence)">encode</a></code>&nbsp;in interface&nbsp;<code><a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a></code></dd>
</dl>
</li>
</ul>
<a id="matches(java.lang.CharSequence,java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>matches</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;matches&#8203;(java.lang.CharSequence&nbsp;rawPassword,
                       java.lang.String&nbsp;prefixEncodedPassword)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="PasswordEncoder.html#matches(java.lang.CharSequence,java.lang.String)">PasswordEncoder</a></code></span></div>
<div class="block">Verify the encoded password obtained from storage matches the submitted raw
password after it too is encoded. Returns true if the passwords match, false if
they do not. The stored password itself is never decoded.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="PasswordEncoder.html#matches(java.lang.CharSequence,java.lang.String)">matches</a></code>&nbsp;in interface&nbsp;<code><a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rawPassword</code> - the raw password to encode and match</dd>
<dd><code>prefixEncodedPassword</code> - the encoded password from storage to compare with</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the raw password, after encoding, matches the encoded password from
storage</dd>
</dl>
</li>
</ul>
<a id="upgradeEncoding(java.lang.String)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>upgradeEncoding</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;upgradeEncoding&#8203;(java.lang.String&nbsp;prefixEncodedPassword)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="PasswordEncoder.html#upgradeEncoding(java.lang.String)">PasswordEncoder</a></code></span></div>
<div class="block">Returns true if the encoded password should be encoded again for better security,
else false. The default implementation always returns false.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="PasswordEncoder.html#upgradeEncoding(java.lang.String)">upgradeEncoding</a></code>&nbsp;in interface&nbsp;<code><a href="PasswordEncoder.html" title="interface in org.springframework.security.crypto.password">PasswordEncoder</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>prefixEncodedPassword</code> - the encoded password to check</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the encoded password should be encoded again for better security,
else false.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="DelegatingPasswordEncoder.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="DelegatingPasswordEncoder.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="DelegatingPasswordEncoder.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="DelegatingPasswordEncoder.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="DelegatingPasswordEncoder.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040daec38ca980c","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
